home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 7
/
Aminet 7 - August 1995.iso
/
Aminet
/
comm
/
tcp
/
AmigaTCP.lha
/
AmigaTCP
/
src
/
tcptimer.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-06-24
|
869b
|
42 lines
/* TCP timeout routines */
#include <stdio.h>
#include "machdep.h"
#include "timer.h"
#include "mbuf.h"
#include "netuser.h"
#include "internet.h"
#include "ip.h"
#include "tcp.h"
/* Timer timeout */
void
tcp_timeout(arg)
int *arg;
{
register struct tcb *tcb;
tcb = (struct tcb *)arg;
switch(tcb->state){
case TIME_WAIT: /* 2MSL timer has expired */
close_self(tcb,NORMAL);
break;
default: /* Retransmission timer has expired */
if(tcb->retry < RETRY){
tcb->retry++;
tcb->snd.ptr = tcb->snd.una;
/* Back off on retransmission timer;
* on closed window probes, limit it to
* BACKOFF x the current round trip estimate
*/
tcb->timer.start <<= 1;
if(tcb->snd.wnd == 0)
tcb->timer.start =
min(tcb->timer.start,BACKOFF*tcb->srtt/MSPTICK);
tcp_output(tcb);
} else {
/* Give up */
close_self(tcb,TIMEOUT);
}
}
}